----可以找出誰動過DB下過什麼指令....等,是誰DROP.DELETE.TRUNCATE了DB----
先查詢Mysql版本
mysql -V
相關訊息如下
mysql Ver 14.14 Distrib 5.6.41, for linux-glibc2.12 (x86_64) using EditLine wrapper
進入Mysql執行,查詢確認路徑
mysql>show variables like "%plugin%";
+——————————————+——————————————————————————————+
| Variable_name| Value |
+——————————————+——————————————————————————————+
| plugin_dir | /usr/local/mysql/lib/plugin/ |
+——————————————+——————————————————————————————+
查找一下路徑內有無server_audit.so的文件
find / -name "server_audit.so"
有就忽略下載方式經檔案移動到,Mysql查詢到的路徑下
mv "find查詢後顯示的路徑" /usr/local/mysql/lib/plugin/
沒有就下載server_audit.so到/usr/local/mysql/lib/plugin/下的路徑
https://downloads.mariadb.org/ ←可查詢適合的版本
下載方式1.直接LINUX下載,
※檔案有點大,裡面東西很多,因為找不到單獨的檔案!解壓之後把要的CP或MV到路徑下,其他的東西就可以刪了
wget https://download.mariadb.org/f/mariadb-10.2.19/bintar-linux-x86_64/mariadb-10.2.19-linux-x86_64.tar.gz
解壓縮
tar zxvf mariadb-10.2.19-linux-x86_64.tar.gz
因下載在我放在tmp下所以從tmp移到/usr/local/mysql/lib/plugin/
*檔案正常在mariadb-10.2.19-linux-x86_64/lib/plugin/server_audit.so
find / -name "server_audit.so"
mv /tmp/mariadb-10.2.19-linux-x86_64/lib/plugin/server_audit.so /usr/local/mysql/lib/plugin/
下載方式2.存在自己的電腦後,再解壓,直接COPY- server_audit.so 檔再移到系統內
並增加server_audit.so執行權限
chmod +x server_audit.so
接下來進行設定及排程,進入Mysql安裝server_audit.so插件
mysql>INSTALL PLUGIN server_audit SONAME "server_audit.so";
查看配置內容
mysql>show variables like “%audit%";
+--------------------------------+-----------------------+
|Variable_name | Value |
+--------------------------------+-----------------------+
| server_audit_events | |
| server_audit_excl_users | |
| server_audit_file_path | server_audit.log |
| server_audit_file_rotate_now | OFF |
| server_audit_file_rotate_size | 1000000 |
| server_audit_file_rotations | 9 |
| server_audit_incl_users | |
| server_audit_loc_info | |
| server_audit_logging | OFF |
| server_audit_mode | 1 |
| server_audit_output_type | file |
| server_audit_query_log_limit | 1024 |
| server_audit_syslog_facility | LOG_USER |
| server_audit_syslog_ident | mysql-server_auditing |
| server_audit_syslog_info | |
| server_audit_syslog_priority | LOG_INFO |
+--------------------------------+-----------------------+
在文件裡 Logging events 一節提到的可設定的 Type,說明如下
-CONNECT —–連接,斷開連接和連接失敗-包括錯誤代碼
-QUERY —–執行的查詢及其結果以純文本形式顯示,包括由於語法或權限錯誤導致的查詢失敗
-TABLE —–哪些 Tables 因此 QUERY 而受影響
-QUERY_DDL —–DDL 的 Query,是 QUERY的子集合 過濾DDL類型的查詢(CREATE、ALTER和DROP、RENAME以及TRUNCATE語句-除了CREATE/DROP [PROCEDURE / FUNCTION / USER]和RENAME USE
-QUERY_DML —–DML 的 Query,是 QUERY的子集合 過濾DML類型的查詢(DO、CALL、LOAD DATA/XML、DELETE、INSERT、SELECT、UPDATE、HANDLER和REPLACE語句)
-QUERY_DML_NO_SELECT —– 與QUERY_DML同但不記錄SELECT查詢相同。(因為版本1.4.4)(DO、CALL、LOAD DATA/XML、DELETE、INSERT、UPDATE、HANDLER、REPLACE )
-QUERY_DCL ——DCL 的 Query,是 QUERY的子集 過濾DCL型查詢(CREATE USER、DROP USER、RENAME USER、GRANT、REVOKE和SET PASSWORD語句)
進入Mysql執行:變更全局變量
若伺服器已啟動,不便重開故可直接於Mysql下執行!
亦可至my.cnf設置,但需重啟!
mysql>set global server_audit_events="CONNECT,QUERY,TABLE,QUERY_DDL,QUERY_DML,QUERY_DCL";
mysql>set global server_audit_file_path ="/data/audit_log/server_audit.log";
mysql>set global server_audit_file_rotate_size=1073741824;
mysql>set global server_audit_file_rotations=0;
mysql>set global server_audit_output_type=file;
接著建議先查看變量是否有更動
mysql>show variables like "server_audit%";
確定指定的變量都改變了之後,再將審計功能啟動
mysql>set global server_audit_logging=on;
可再次查看是否啟動成功 ,啟動成功就可以到指定資料夾查看使用者操作記錄!